var x;
var y;
var bm;
var userId;
var nowDate;
var nowTime;
var day;
var sport;
var locationIds;
var marker;
var clazzId;
var limitTime;
var openId;
$.getJSON("/map/getConfig/", function (json) {

    wx.config({
        debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
        appId: configAppId, // 必填，公众号的唯一标识
        timestamp: json.timeStamp, // 必填，生成签名的时间戳
        nonceStr: json.nonceStr, // 必填，生成签名的随机串
        signature: json.signature,// 必填，签名
        jsApiList: [
            'openLocation',
            'getLocation',
            'chooseImage',
            'uploadImage',
            'closeWindow'
        ] // 必填，需要使用的JS接口列表，所有JS接口列表见官方文档附录2
    });
    wx.ready(function () {
        console.log("this is ready");
        init();
        getLocation();
        $.ajax({
            type: "get",
            url: "/sport/getUserId",
            dataType: "json",
            async: false,
            success: function (data) {
                userId = data.userId;
                checkFirst();
            }
        })
            bm = new BMap.Map("allmap");
            $.ajax({
                type:"get",
                url:"/map/getOpenId",
                dataType:"json",
                async:false,
                success:function(data) {
                    openId=data.openId;
                }
            })
            getLimitTime();
            $.ajax({
                type: "post",
                url: "/event/getEventById",
                data: {
                    id: 11
                }, dataType: "json",
                async: false,
                success: function (data) {
                    locationIds = (data.locations).split(",");
                }
            });
    });
    wx.error(function (res) {
        console.log("this is error");
    });

    function init() {
        var date = new Date();
        nowDate = date.toLocaleDateString();
        nowTime = two_char(date.getHours()) + ":" + two_char(date.getMinutes()) + ":" + two_char(date.getSeconds())
        day=date.getDay();

    }

    function two_char(n) {
        return n >= 10 ? n : "0" + n;
    }
    function getLimitTime() {
        var user={
            openId:openId
        }
        $.ajax({
            type:"get",
            url:urlToUser+"/user/getUserByOpenId",
            data:user,
            dataType:"json",
            async:false,
            success:function(data) {
                clazzId=data[0].clazzid;
            }
        })
        var runLimitTime={
            clazzId:clazzId
        }
        $.ajax({
            type:"get",
            url:"/runLimitTime/getRunLimitTimeByClazzId",
            data:runLimitTime,
            dataType:"json",
            async:false,
            success:function(data) {
                limitTime=data.limitTime;
            }
        })
    }

    //判断是否今天第一次进入
    function checkFirst() {
        sport = {
            userId: userId,
            date: nowDate
        }
        $.ajax({
            type: "get",
            url: "/sport/getSportByUserIdAndDate",
            data: sport,
            async: false,
            dataType: "json",
            success: function (data) {


                if (data.result=="false") {
                    initInformation();
                } else {
                    if(data.sport.startTime==null&&data.sport.img1==null){
                        if(day==0||day==6){
                            $("#b_sport").text("运动健身");
                            $("#b_sport").css('display', 'block');
                            $("#h_sportType").val("2");
                        }
                        else{
                            $("#b_sport").css('display', 'block');
                            $("#b_weather").css('display', 'block');
                        }
                    }
                    //上传完天气原因后，没有上传运动健身图片
                    if(data.sport.img1!=null&&data.sport.img2==null){
                        swal("请继续上传运动健身照片！", "", "success");
                       // alert("请继续上传运动健身照片！");
                        $("#b_sport").text("运动健身");
                        $("#b_sport").css('display', 'block');
                        $("#h_sportType").val("2");
                    }
                    //显示中途打卡
                    if(data.sport.startTime!=null&&data.sport.middleTime==null){
                        $("#b_sport").text("中途打卡");
                        $("#b_sport").css('display', 'block');
                        $("#h_sportType").val("3");
                        swal("环湖跑进行中，加油！", "", "success");

                        //alert("环湖跑进行中，加油！");
                    }
                    //显示结束跑步
                    if(data.sport.middleTime!=null&&data.sport.finishTime==null){
                        $("#b_sport").text("结束跑步");
                        $("#b_sport").css('display', 'block');
                        $("#h_sportType").val("4");
                        swal("环湖跑已过大半，加油！", "", "success");

                       // alert("环湖跑已过大半，加油！");
                    }
                    //结束跑步打卡后
                    if(data.sport.finishTime!=null||data.sport.img2!=null){
                        swal("该项今日已打卡！", "", "success");
                        setTimeout(wx.closeWindow,8000);

                        // alert("该项今日已打卡！");
                        // wx.closeWindow();
                    }

                }

            }

        })
    }

    //获取目标位置
    function getSportLocation(a) {
        var location = {
            id: locationIds[a]
        };
        $.ajax({
            type: "get",
            url: "/location/getLocationById",
            data: location,
            dataType: "json",
            async: false,
            success: function (data) {
                var res_x = data[0].x;
                var res_y = data[0].y;
                checkSportLocation(res_x, res_y);
            }
        })
    }

    //检验开始环湖跑的位置成功后，调用该方法，往sport表插入startTime、type
    function setBeginTime() {
        init();
            sport = {
                userId: userId,
                date: nowDate,
                startTime: nowTime,
                type: 1
            }
            $.ajax({
                type: "post",
                url: "/sport/updateStartTime",
                data: sport,
                dataType: "text",
                success: function (data) {
                    if (data == 1) {
                        swal("环湖跑已开始！", "", "success");

                       // alert("环湖跑已开始！");
                        $("#s_sportType").css("display", "none");
                        $("#b_weather").css("display", "none");
                        $("#b_sport").text("中途打卡");
                        $("#h_sportType").val("3");
                    }
                }
            })
    }
    //检验中途环湖跑的位置成功后，调用该方法，往sport表插入middleTime
    function setMiddleTime() {
        init();
        sport = {
            userId: userId,
            date: nowDate,
            middleTime: nowTime,
        }
        $.ajax({
            type: "post",
            url: "/sport/updateMiddleTime",
            data: sport,
            dataType: "text",
            success: function (data) {
                if (data == 1) {
                    swal("中途已打卡！", "", "success");

                   // alert("中途已打卡！");
                    $("#b_sport").text("结束跑步");
                    $("#h_sportType").val("4");
                }
            }
        })

    }
    //检验结束环湖跑的位置成功后，调用该方法，往sport表插入finishTime
    function setFinishTime() {
        init();
        sport = {
            userId: userId,
            date: nowDate,
            finishTime: nowTime,
        }
        $.ajax({
            type: "post",
            url: "/sport/updateFinishTime",
            data: sport,
            dataType: "text",
            success: function (data) {
                if (data == 1) {
                    swal("结束跑步已打卡！", "", "success");

                    //alert("结束跑步已打卡！");
                    $("#b_sport").css("display", "none");
                    checkSpendTime();
                }
            }
        })

    }
    function checkSpendTime(){
        $.ajax({
            type: "get",
            url: "/sport/getSportByUserIdAndDate",
            data: sport,
            async: false,
            dataType: "json",
            success:function(data) {
                var sTime=(data.sport.startTime).split(":");
                var s_hour=parseInt(sTime[0]);
                var s_min=parseInt(sTime[1]);
                var eTime=(data.sport.finishTime).split(":");
                var e_hour=parseInt(eTime[0]);
                var e_min=parseInt(eTime[1]);
                var spendTime=(e_hour-s_hour)*60+(e_min-s_min);
                    var sport={
                        userId:userId,
                        date:nowDate,
                        spendTime:spendTime
                    }
                    $.ajax({
                        type:"post",
                        url:"/sport/updateSpendTime",
                        data:sport,
                        dataType:"text",
                        success:function(data) {
                            if(data==1){
                                if(spendTime<limitTime){
                                    updateDoEvent(spendTime,1);
                                } else{
                                    updateDoEvent(spendTime,0);
                                    swal("--本次环湖跑用时："+spendTime+"分钟--\n跑步超时，打卡失败！", "勤学金 +0元该项执行力:0%、信誉度:0%", "error");
                                    setTimeout(wx.closeWindow,5000);
                                   //  alert("--本次环湖跑用时："+spendTime+
                                   //      "分钟--\n跑步超时，打卡失败！\n勤学金 +0元\n该项执行力:0%、信誉度:0%");
                                }
                            }
                        }
                    })

            }
        })
    }
    function updateDoEvent(spendTime,result){
        var doEvent={
            userId:userId,
            eventId:11,
            date:nowDate,
            result:result
        };
        $.ajax({
            type:"post",
            url:"/doEvent/updateDoEvent",
            data:doEvent,
            dataType:"text",
            success:function(data) {
                if(data==1){
                    swal("--本次环湖跑用时："+spendTime+"分钟--\n--完成环湖跑，打卡成功！--","勤学金 +10元\n该项执行力:100%、信誉度:100%",  "success");
                    setTimeout(wx.closeWindow,4000);
                    // alert("--本次环湖跑用时："+spendTime+
                    //     "分钟--\n--完成环湖跑，打卡成功！--\n勤学金 +10元\n该项执行力:100%、信誉度:100%");
                    responseMessage("环湖跑");
                   // wx.closeWindow();
                }
            }
        })
    }
    function responseMessage(eventName) {
        var responseUser={
            openId:openId,
            eventName:eventName
        }
        $.ajax({
            type:"post",
            data:responseUser,
            dateType:"text",
            url:"/doEvent/responseMessage",
            async:false
        })
    }
    function updateDoEvent1(){
        var doEvent={
            userId:userId,
            eventId:11,
            date:nowDate,
            result:1
        };
        $.ajax({
            type:"post",
            url:"/doEvent/updateDoEvent",
            data:doEvent,
            dataType:"text",
            success:function(data) {
                if(data==1){
                    swal("--  上传成功！  --"+"\n--  完成该项！  --","勤学金 +10元\n该项执行力:100%、信誉度:100%", "success");
                    setTimeout(wx.closeWindow,4000);
                    //alert("--  上传成功！  --"+"\n--  完成该项！  --\n勤学金 +10元\n该项执行力:100%、信誉度:100%");
                    responseMessage("运动健身");
                   // wx.closeWindow();

                }
            }
        })
    }

    $("#s_sportType").change(function () {
        var sportType = $("#s_sportType").val();
        if (sportType == 2) {
            $("#b_sport").text("运动健身");
            $("#h_sportType").val("2");
            $("#b_weather").css('display', 'none');
        }
        if (sportType == 1) {
            $("#b_sport").text("开始跑步");
            $("#h_sportType").val("1");
            $("#b_weather").css('display', 'block');
        }
    })
    //点击按钮，分发运动类型
    $("#b_sport").click(function () {
        var h_sportType = $("#h_sportType").val();
        if (h_sportType == 1) {
            getSportLocation(0);
        }
        if (h_sportType == 2) {
            wx.chooseImage({
                count: 1,
                sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图，默认二者都有
                sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机，默认二者都有
                success: function (res) {
                    var localIds = res.localIds; // 返回选定照片的本地ID列表，localId可以作为img标签的src属性显示图片
                    uploadImg2(localIds[0]);
                }
            });

        }
        if (h_sportType == 3) {
            getSportLocation(1);
        }
        if (h_sportType == 4) {
            getSportLocation(2);
        }
    });
    //点击天气原因按钮
    $("#b_weather").click(function() {
        wx.chooseImage({
            count: 1,
            sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图，默认二者都有
            sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机，默认二者都有
            success: function (res) {
                var localIds = res.localIds; // 返回选定照片的本地ID列表，localId可以作为img标签的src属性显示图片
                uploadImg1(localIds[0]);
            }
        });
    })

    //如若是今天第一次进入插入初始数据
    function initInformation() {
        $.ajax({
            type: "post",
            data: sport,
            dataType: "text",
            url: "/sport/initInformation",
            success: function (data) {
                if (1 == data) {
                    if(day==0||day==6){
                        $("#b_sport").text("运动健身");
                        $("#b_sport").css('display', 'block');
                        $("#h_sportType").val("2");
                        $("#b_weather").css('display', 'none');
                    }
                    else{
                        $("#b_sport").css('display', 'block');
                        $("#b_weather").css('display', 'block');
                    }
                }
            }

        })

    }

    function getLocation() {
        wx.getLocation({
            type: 'wgs84', // 默认为wgs84的gps坐标，如果要返回直接给openLocation用的火星坐标，可传入'gcj02'
            success: function (res) {
                console.log("this is get location=========" + res.latitude);
                console.log("this is get location=========" + res.longitude);
                x = res.longitude;
                y = res.latitude;
                var ggPoint = new BMap.Point(x, y);
                //地图初始化
                bm.centerAndZoom(ggPoint, 18);
                //坐标转换完之后的回调函数
                translateCallback = function (data) {
                    if (data.status === 0) {
                        marker = new BMap.Marker(data.points[0]);
                        bm.addOverlay(marker);
                        var label = new BMap.Label("我的位置", {offset: new BMap.Size(20, -10)});
                        marker.setLabel(label);//添加百度label
                        bm.setCenter(data.points[0]);
                    }
                }
                var convertor = new BMap.Convertor();
                var pointArr = [];
                pointArr.push(ggPoint);
                convertor.translate(pointArr, 1, 5, translateCallback);
            }, cancel: function (res) {

            }
        });
    };

    function checkSportLocation(res_x, res_y) {
        wx.getLocation({
            type: 'wgs84', // 默认为wgs84的gps坐标，如果要返回直接给openLocation用的火星坐标，可传入'gcj02'
            success: function (res) {
                console.log("this is get location=========" + res.latitude);
                console.log("this is get location=========" + res.longitude);
                x = res.longitude;
                y = res.latitude;
                bm.removeOverlay(marker);
                getLocation();
                var h_sportType = $("#h_sportType").val();
                var myPoint = new BMap.Point(x, y);
                var targetPoint = new BMap.Point(res_x, res_y);
                if (bm.getDistance(myPoint, targetPoint).toFixed(2) < 500) {
                    if(h_sportType==1){
                        setBeginTime();
                    }
                    if(h_sportType==3){
                        setMiddleTime();
                    }
                    if(h_sportType==4){
                        setFinishTime();
                    }
                }
                else {
                    swal("不在要求位置！", "", "error");
                  //  alert("不在要求位置！");
                }
            }, cancel: function (res) {

            }
        });
    }
    function uploadImg1(e) {
        wx.uploadImage({
            localId: e, // 需要上传的图片的本地ID，由chooseImage接口获得
            isShowProgressTips: 1, // 默认为1，显示进度提示
            success: function (res) {
                var serverId = res.serverId;
                sport={
                    userId:userId,
                    date:nowDate,
                    img1:serverId
                }
                $.ajax({
                    type: "post",
                    url: "/img/uploadImg1",
                    dataType: "text",
                    async: false,
                    contentType: "application/x-www-form-urlencoded; charset=UTF-8",
                    data: sport,
                    timeout: 30000,
                    success: function (data) {
                        if(data==1){
                            $("#s_sportType").css('display', 'none');
                            $("#b_sport").text("运动健身");
                            $("#b_weather").css('display', 'none');
                            $("#h_sportType").val("2");

                            alert("--       上传成功！    --"+"\n--请上传运动健身图片完成该项！--");
                        }
                    },
                    error: function () {
                        $.toast('上传错误,请稍候重试!', 'text');
                    }
                });
            },
            fail: function (error) {
                $.toast('上传错误,请稍候重试!', 'text');
            }
        });
    }
    function uploadImg2(e) {
        wx.uploadImage({
            localId: e, // 需要上传的图片的本地ID，由chooseImage接口获得
            isShowProgressTips: 1, // 默认为1，显示进度提示
            success: function (res) {
                var serverId = res.serverId;
                sport={
                    userId:userId,
                    date:nowDate,
                    img2:serverId
                };
                $.ajax({
                    type: "post",
                    url: "/img/uploadImg2",
                    dataType: "text",
                    async: false,
                    contentType: "application/x-www-form-urlencoded; charset=UTF-8",
                    data: sport,
                    timeout: 30000,
                    success: function (data) {
                        if(data==1){
                            updateDoEvent1();
                            $("#b_sport").css('display', 'none');
                        }
                    },
                    error: function () {
                        $.toast('上传错误,请稍候重试!', 'text');
                    }
                });
            },
            fail: function (error) {
                $.toast('上传错误,请稍候重试!', 'text');
            }
        });
    }


});

